#!/usr/bin/env python
# -*-coding: utf-8 -*-
# Filename: detalle_grupo.py

##
# Módulos del sistema
# Parte gráfica
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"

##
# Módulos propios
try:
    from gui.msj_retroalimentacion import MensajeDeError, MensajeDeAdvertencia
    from lib.funciones_utiles import add_find_column
    from lib.database import Ticket
except ImportError, error:
    print error
    print "Error en detalle_grupo.py"

class DetalleDeGrupoDeResolucion:
    def __init__(self, padre, grupo):
        self.gladefile = "gui/ghhp.glade"
        self.wTree = gtk.glade.XML(self.gladefile, "DetalleGrupoDeResolucion")
        self.window = self.wTree.get_widget("DetalleGrupoDeResolucion")
        self.un_dict = {"on_cancelbutton18_clicked": self.aceptar}
        self.wTree.signal_autoconnect(self.un_dict)
        self.padre = padre
        self.tree_integrantes = self.wTree.get_widget("treeview27")
        self.lista_integrantes = gtk.ListStore(str, str, str)
        self.tree_integrantes.set_model(self.lista_integrantes)
        self.tree_ticket = self.wTree.get_widget("treeview28")
        self.lista_ticket = gtk.ListStore(str, str, str, str, str, str ,str,str)
        self.tree_ticket.set_model(self.lista_ticket)
        self.armar_listas_resultado()
        self.mostrar_datos(grupo)
        self.window.resize(700, 400)

    def armar_listas_resultado(self):
        # Integrantes
        titulos_integrantes = ("Legajo", "Apellido", "Nombre")
        for pos, titulo in enumerate(titulos_integrantes):
            add_find_column(titulo, pos, self.tree_integrantes)
        # Ticket
        titulos_ticket = ("Nro.\nticket", "Legajo\nUsuario", "Apellido y\nNombre",
                "Telefono\nint.", "Telefono\next.", "Fecha\nderivación",
                "Hora\nderivación", "Estado\nIntervencion")
        for pos, titulo in enumerate(titulos_ticket):
            add_find_column(titulo, pos, self.tree_ticket)
         
    def aceptar(self, widget):
        self.window.destroy()

    def mostrar_datos(self, grupo):
        self.window.resize(700, 400)
        # !!!FIXME: Ver observaciones del caso de uso
        # intervenciones abiertas
        # ticket cerrados por las intervenciones del grupo

        # Integrantes:
        for integrante in grupo.integrantes:
            self.lista_integrantes.append([integrante.empleado.legajo,
                integrante.empleado.apellido, integrante.empleado.nombre])
        # Ticket:
        lista_resultado = Ticket.selectBy(grupo_de_resolucion=grupo)
        for ticket in lista_resultado:
            apellido_nombre = (ticket.usuario_creacion.empleado.apellido,
                    ticket.usuario_creacion.empleado.nombre)
            print "\n".join(apellido_nombre)
            self.lista_ticket.append([str(ticket.id),
                    ticket.usuario_creacion.empleado.legajo,
                    "\n".join(apellido_nombre),
                    ticket.usuario_creacion.empleado.telefono_interno,
                    ticket.usuario_creacion.empleado.telefono_externo,
                    ticket.historial_de_estado[-1].fecha.strftime("%d-%m-%Y"),
                    ticket.historial_de_estado[-1].fecha.strftime("%H:%M"),
                    'FIXME'])

